#include <iostream>

struct DArray
{
    void **a;
    int size;
    int capacity;
};

void FreeDArray(DArray &a, void (*clear)(void *) = NULL)   // 给参数一个默认值，不传参也能使用
{
    for (int i = 0; i < a.size; i++)
    {
        if (clear != NULL)
            clear(a.a[i]);
    }
}

void clear(void *a)
{

}

//不传参就用默认值  传了就用传的
//默认参数只能放在最右边  //void func(int a,int b=10,int c) 不行
//出现第一个默认参数以后，后面的都是默认参数 void func(int a=12,int b=11,int c=10)  传（1,2）->（1,2,10）
//默认参数写在声明中，定义中不要再写 
void func(int a,int b,int c=10) //调用的时候不传c也可以 默认是10
{
    std::cout<<a<<" "<<b<<" "<<c<<" "<<std::endl;
}

//占位参数
void func1(int)
{
}

int main()
{
    // DArray a;
    // FreeDArray(a);

    func(1,2,3);

    return 0;
}
